<script>
  /**
   * new 是什么？
   * 定义：new操作符用于创建一个给定构造函数的实例对象
   * 简单来说：
   *      1.new 能创建一个 实例对象
   *      2.这个对象是给定的构造函数
  */
  function Person(name, age) {
    this.name = name;
    this.age = age;
    console.log(this) // Person { name: 'Tom', age: 20 }
  }
  Person.prototype.sayName = function () {
    console.log(this.name)
  }
  const person1 = new Person('Tom', 20)
  console.log(person1)  // Person {name: "Tom", age: 20}
  person1.sayName() // 'Tom'

  /**
   * 从这个例子能看出
   * new 通过构造函数 Person 创建出来的实例可以访问到构造函数中的属性
   * new 通过构造函数 person 创建出来的实例可以访问到构造函数原型链中的属性（即sayName）
   * 构造函数 Person 的 this 指向是 new 通过构造函数 Person 创建出来的实例
  */
</script>